package com.thinvent.foxit.util;

import java.lang.reflect.Field;
import java.util.HashMap;
import java.util.Map;

public class BeanToMapConverterUtil {
    /**
     * 将Java Bean转换为Map
     *
     * @param bean 要转换的bean
     * @return 包含bean属性的Map
     */
    public static Map<String, Object> convertToMap(Object bean) {
        if (bean == null) {
            return null;
        }

        Map<String, Object> map = new HashMap<>();
        Class<?> clazz = bean.getClass();

        // 遍历bean的所有字段（包括私有字段）
        Field[] fields = clazz.getDeclaredFields();
        for (Field field : fields) {
            // 尝试访问私有字段
            field.setAccessible(true);

            try {
                // 获取字段的值
                Object value = field.get(bean);
                // 将字段名和值放入map中
                map.put(field.getName(), value);
            } catch (IllegalAccessException e) {
                // 处理异常，这里简单打印堆栈跟踪
                e.printStackTrace();
            }
        }

        // 如果需要，还可以处理继承的字段
        // Class<?> superclass = clazz.getSuperclass();
        // while (superclass != null) {
        //     // 递归处理父类字段
        //     // ...
        //     superclass = superclass.getSuperclass();
        // }

        return map;
    }
}
